# 判断是否是 linux 系统 如果不是直接报错
if(NOT CMAKE_SYSTEM_NAME STREQUAL "Linux")
    message(FATAL_ERROR "fuse3 模块仅支持 Linux 系统")
endif()
message(NOTICE "开始构建 fuse3 模块")
# 检查构建目标是否存在
if(TARGET fuse3-${FUSE3_TAG})
    message(NOTICE "fuse3 模块已存在 fuse3-${FUSE3_TAG}")
 return()
endif()
# 检查生成的文件是否存在
existsInstallFiles(
${MODULE_STAMP}/fuse3/${FUSE3_TAG}
${MODULE_INSTALL_DIR}/fuse3/${FUSE3_TAG}
fuse3-${FUSE3_TAG})
# 构建 zlib 库
ExternalProject_Add(
    fuse3-${FUSE3_TAG}
    # 目录配置
    PREFIX         ${MODULE_PREFIX}                        # ✅ 显式设置 prefix 目录
    SOURCE_DIR     ${MODULE_SRC}/fuse3/${FUSE3_TAG}    # ✅ 显式设置 source 目录
    BINARY_DIR     ${MODULE_BUILD}/fuse3/${FUSE3_TAG}        # ✅ 显式设置 build 目录
    INSTALL_DIR    ${MODULE_INSTALL_DIR}/fuse3/${FUSE3_TAG}  # ✅ 显式设置 install 目录
    STAMP_DIR      ${MODULE_STAMP}/fuse3/${FUSE3_TAG}        # ✅ 显式设置 stamp 目录
    TMP_DIR        ${MODULE_TMP}/fuse3/${FUSE3_TAG}            # ✅ 显式设置 tmp 目录
    DOWNLOAD_COMMAND # 下载命令
        COMMAND ${CMAKE_COMMAND}
            -DSOURCE_DIR=<SOURCE_DIR>
            -DGIT_REPOSITORY=${FUSE3_REPO}
            -DGIT_TAG=${FUSE3_TAG}
            -P ${__DIR}/utils/git.cmake
        # 配置命令
        CONFIGURE_COMMAND
            ${CMAKE_COMMAND} -E env MESONOPTS=--wrap-mode=nodownload
            meson
            setup <SOURCE_DIR>
            <BINARY_DIR>
            --prefix=<INSTALL_DIR>              # 安装前缀
            --libdir=lib                        # 库文件目录
            --includedir=include                # 头文件目录
            --buildtype=debug                   # 构建类型
            -Ddefault_library=both             # 构建静态库和动态库
            -Duseroot=false                    # 不使用 root 权限
            -Dexamples=false                   # 不构建示例程序
            -Dexperimental=false                   # 不构建示例程序
            #-Ddocs=true                   # 不构建示例程序

        # 3. 构建阶段：运行 ninja
        BUILD_COMMAND
            ninja -C <BINARY_DIR> -j ${NPROC}

        # 4. 安装阶段：安装到
        INSTALL_COMMAND
            COMMAND ninja -C <BINARY_DIR> install
            # 将安装文件路径保存到 文件去
            COMMAND ${CMAKE_COMMAND}
                -DINSTALL_DIR=<INSTALL_DIR>
                -DCMAKE_PREFIX_PATH=${SYSTEM_PREFIX}
                -P ${__DIR}/utils/write_install_files.cmake
        # ✅ 启用所有日志（调试必备）
        LOG_DOWNLOAD      OFF                           # 下载日志
        LOG_CONFIGURE     ON                           # 配置日志
        LOG_BUILD         OFF                           # 构建日志
        LOG_INSTALL       OFF                           # 安装日志
        LOG_OUTPUT_ON_FAILURE ON                       # 失败时自动输出日志
        STEP_TARGETS configure build install # 关键：添加 install 步骤
)

# 导入 fuse3 库
add_library(fuse3::fuse3 STATIC IMPORTED)
set_target_properties(fuse3::fuse3 PROPERTIES
    IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
    IMPORTED_LOCATION ${MODULE_INSTALL_DIR}/fuse3/${FUSE3_TAG}/lib/libfuse3.a
    INTERFACE_INCLUDE_DIRECTORIES ${MODULE_INSTALL_DIR}/fuse3/${FUSE3_TAG}/include
)
#依赖库
add_dependencies(fuse3-${FUSE3_TAG}
install-autoconf
install-meson)
add_dependencies(fuse3::fuse3 fuse3-${FUSE3_TAG})
